package top.rainbowecho.model.percona;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * VIEW
 * </p>
 *
 * @author 杨健
 * @since 2020-07-30
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("ArticleInfo")
public class ArticleInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 文章主键
     */
    @TableField("id")
    private String id;

    /**
     * 图片封面url，新建时随机选取
     */
    @TableField("cover")
    private String cover;

    /**
     * 文章文本
     */
    @TableField("text")
    private String text;

    /**
     * 文章标题，最多只能包含40个字符
     */
    @TableField("title")
    private String title;

    /**
     * 文章的摘要
     */
    @TableField("summary")
    private String summary;

    @TableField("browse_count")
    private Long browseCount;

    /**
     * 最后更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;

    /**
     * 目录名称
     */
    @TableField("category_name")
    private String categoryName;

    /**
     * 用户名，长度限制在20个英文字符或10个中文字符
     */
    @TableField("user_name")
    private String userName;

    /**
     * 用户头像图片url
     */
    @TableField("avatar")
    private String avatar;

    @TableField("like_count")
    private Long likeCount;

    @TableField("reply_count")
    private Long replyCount;

    /**
     * 标签名称
     */
    @TableField("tag_name")
    private String tagName;

    /**
     * 计算一篇文章的权重
     *
     * @return 权重值
     */
    public BigDecimal calculateWeight() {
        return BigDecimal.valueOf(getLikeCount() * 0.4 + getBrowseCount() * 0.3 + getReplyCount() * 0.3);
    }
}
